package it.azienda.moretti.modello;

import it.azienda.framework.modello.BeanBase;
import it.azienda.framework.persistenza.DAOConnectionSingleton;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import org.hibernate.Session;

public class BeanTrattaApp extends BeanBase {

    public BeanTrattaApp() {
        this.beanLinea = new BeanLinea();
        this.beanFermataPartenza = new BeanFermata();
        this.beanFermataArrivo = new BeanFermata();
        this.campoS_1 = "N";
        this.campoS_2 = "N";
        this.campoS_3 = "N";
        this.campoS_4 = "N";
        this.campoS_5 = "N";
        this.campoS_6 = "N";
        this.campoS_7 = "N";
        this.tariffaSemp = new Double(0);
        this.tariffaAR = new Double(0);

    }

    private Long id;
    private Integer ordine;
    private String tariffe;
    private BeanLinea beanLinea = new BeanLinea();
    private BeanFermata beanFermataPartenza = new BeanFermata();
    private BeanFermata beanFermataArrivo = new BeanFermata();
    private Double tariffaSemp;
    private Double tariffaAR;

    private Integer oraPartenza = 0;
    private Integer minutiPartenza = 0;
    private Integer oraArrivo = 0;
    private Integer minutiArrivo = 0;
    private Integer oraChiusura = 0;
    private Integer minutiChiusura = 0;
    private String tipo = "S";
    private String attivo = "S";
    private String note = "";

    private String campoS_1 = "N";
    private String campoS_2 = "N";
    private String campoS_3 = "N";
    private String campoS_4 = "N";
    private String campoS_5 = "N";
    private String campoS_6 = "N";
    private String campoS_7 = "N";

    private String giorni;
    private String dataApp;
    private java.util.Date data;
    
    private SelectItem[] ordinamento;

    public SelectItem[] getOrdinamento() {
        ordinamento = new SelectItem[2];
        ordinamento[0] = new SelectItem("", "");
        ordinamento[1] = new SelectItem("ordine", "Ordine");
        return ordinamento;
    }

    public void setOrdinamento(SelectItem[] ordinamento) {
        this.ordinamento = ordinamento;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the ordine
     */
    public Integer getOrdine() {
        return ordine;
    }

    /**
     * @param ordine the ordine to set
     */
    public void setOrdine(Integer ordine) {
        this.ordine = ordine;
    }

    /**
     * @return the beanLinea
     */
    public BeanLinea getBeanLinea() {
        return beanLinea;
    }

    /**
     * @param beanLinea the beanLinea to set
     */
    public void setBeanLinea(BeanLinea beanLinea) {
        this.beanLinea = beanLinea;
    }

    /**
     * @return the oraPartenza
     */
    public Integer getOraPartenza() {
        return oraPartenza;
    }

    /**
     * @param oraPartenza the oraPartenza to set
     */
    public void setOraPartenza(Integer oraPartenza) {
        this.oraPartenza = oraPartenza;
    }

    /**
     * @return the minutiPartenza
     */
    public Integer getMinutiPartenza() {
        return minutiPartenza;
    }

    /**
     * @param minutiPartenza the minutiPartenza to set
     */
    public void setMinutiPartenza(Integer minutiPartenza) {
        this.minutiPartenza = minutiPartenza;
    }

    /**
     * @return the oraArrivo
     */
    public Integer getOraArrivo() {
        return oraArrivo;
    }

    /**
     * @param oraArrivo the oraArrivo to set
     */
    public void setOraArrivo(Integer oraArrivo) {
        this.oraArrivo = oraArrivo;
    }

    /**
     * @return the minutiArrivo
     */
    public Integer getMinutiArrivo() {
        return minutiArrivo;
    }

    /**
     * @param minutiArrivo the minutiArrivo to set
     */
    public void setMinutiArrivo(Integer minutiArrivo) {
        this.minutiArrivo = minutiArrivo;
    }

    /**
     * @return the oraChiusura
     */
    public Integer getOraChiusura() {
        return oraChiusura;
    }

    /**
     * @param oraChiusura the oraChiusura to set
     */
    public void setOraChiusura(Integer oraChiusura) {
        this.oraChiusura = oraChiusura;
    }

    /**
     * @return the minutiChiusura
     */
    public Integer getMinutiChiusura() {
        return minutiChiusura;
    }

    /**
     * @param minutiChiusura the minutiChiusura to set
     */
    public void setMinutiChiusura(Integer minutiChiusura) {
        this.minutiChiusura = minutiChiusura;
    }

    /**
     * @return the tipo
     */
    public String getTipo() {
        return tipo;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    /**
     * @return the attivo
     */
    public String getAttivo() {
        return attivo;
    }

    /**
     * @param attivo the attivo to set
     */
    public void setAttivo(String attivo) {
        this.attivo = attivo;
    }

    /**
     * @return the note
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note the note to set
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return the beanFermataPartenza
     */
    public BeanFermata getBeanFermataPartenza() {
        return beanFermataPartenza;
    }

    /**
     * @param beanFermataPartenza the beanFermataPartenza to set
     */
    public void setBeanFermataPartenza(BeanFermata beanFermataPartenza) {
        this.beanFermataPartenza = beanFermataPartenza;
    }

    /**
     * @return the beanFermatarrivo
     */
    public BeanFermata getBeanFermataArrivo() {
        return beanFermataArrivo;
    }

    /**
     * @param beanFermatarrivo the beanFermatarrivo to set
     */
    public void setBeanFermataArrivo(BeanFermata beanFermataArrivo) {
        this.beanFermataArrivo = beanFermataArrivo;
    }

    /**
     * @return the campoS_1
     */
    public String getCampoS_1() {
        return campoS_1;
    }

    /**
     * @param campoS_1 the campoS_1 to set
     */
    public void setCampoS_1(String campoS_1) {
        this.campoS_1 = campoS_1;
    }

    /**
     * @return the campoS_2
     */
    public String getCampoS_2() {
        return campoS_2;
    }

    /**
     * @param campoS_2 the campoS_2 to set
     */
    public void setCampoS_2(String campoS_2) {
        this.campoS_2 = campoS_2;
    }

    /**
     * @return the campoS_3
     */
    public String getCampoS_3() {
        return campoS_3;
    }

    /**
     * @param campoS_3 the campoS_3 to set
     */
    public void setCampoS_3(String campoS_3) {
        this.campoS_3 = campoS_3;
    }

    /**
     * @return the campoS_4
     */
    public String getCampoS_4() {
        return campoS_4;
    }

    /**
     * @param campoS_4 the campoS_4 to set
     */
    public void setCampoS_4(String campoS_4) {
        this.campoS_4 = campoS_4;
    }

    /**
     * @return the campoS_5
     */
    public String getCampoS_5() {
        return campoS_5;
    }

    /**
     * @param campoS_5 the campoS_5 to set
     */
    public void setCampoS_5(String campoS_5) {
        this.campoS_5 = campoS_5;
    }

    /**
     * @return the campoS_6
     */
    public String getCampoS_6() {
        return campoS_6;
    }

    /**
     * @param campoS_6 the campoS_6 to set
     */
    public void setCampoS_6(String campoS_6) {
        this.campoS_6 = campoS_6;
    }

    /**
     * @return the campoS_7
     */
    public String getCampoS_7() {
        return campoS_7;
    }

    /**
     * @param campoS_7 the campoS_7 to set
     */
    public void setCampoS_7(String campoS_7) {
        this.campoS_7 = campoS_7;
    }
    private ArrayList listaBiglietti = new ArrayList();

    /**
     * @return the listaBiglietti
     */
    public ArrayList getListaBiglietti() {
        if (this.getId() != null) {

            Session sessione = DAOConnectionSingleton.newSession();
            String query = "select bean from BeanBigliettoTratta bean"
                    + " where bean.beanTratta.id = :idTratta";
            listaBiglietti = (ArrayList) sessione.createQuery(query)
                    .setLong("idTratta", this.getId())
                    .list();
        }

        if (listaBiglietti == null) {
            listaBiglietti = new ArrayList();
        }
        return listaBiglietti;

    }

    public void setListaBiglietti(ArrayList listaBiglietti) {
        this.listaBiglietti = listaBiglietti;
    }

    /**
     * @return the giorni
     */
    public String getGiorni() {
        if (campoS_1.equals("S")) {
            giorni = "Lun";
        }
        if (campoS_2.equals("S")) {
            giorni += " Mar";
        }
        if (campoS_3.equals("S")) {
            giorni += " Mer";
        }
        if (campoS_4.equals("S")) {
            giorni += " Gio";
        }
        if (campoS_5.equals("S")) {
            giorni += " Ven";
        }
        if (campoS_6.equals("S")) {
            giorni += " Sab";
        }
        if (campoS_7.equals("S")) {
            giorni += " Dom";
        }

        return giorni;
    }

    /**
     * @param giorni the giorni to set
     */
    public void setGiorni(String giorni) {
        this.giorni = giorni;
    }

    /**
     * @return the tariffaSemp
     */
    public Double getTariffaSemp() {
        try {
            if (this.id != null) {
                String query = "select bean from BeanBigliettoTratta bean"
                        + " where bean.beanFasciaEta.standard = 'S'"
                        + " and bean.beanTratta.id = :id";
                Session sessione = DAOConnectionSingleton.newSession();
                BeanBigliettoTratta bean = (BeanBigliettoTratta) sessione.createQuery(query)
                        .setLong("id", this.id)
                        .uniqueResult();
                if (bean != null) {
                    this.tariffaSemp = bean.getBigliettoS();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tariffaSemp;
    }

    /**
     * @param tariffaSemp the tariffaSemp to set
     */
    public void setTariffaSemp(Double tariffaSemp) {
        this.tariffaSemp = tariffaSemp;
    }

    /**
     * @return the tariffaAR
     */
    public Double getTariffaAR() {
        try {
            if (this.id != null) {
                String query = "select bean from BeanBigliettoTratta bean"
                        + " where bean.beanFasciaEta.standard = 'S'"
                        + " and bean.beanTratta.id = :id";
                Session sessione = DAOConnectionSingleton.newSession();
                BeanBigliettoTratta bean = (BeanBigliettoTratta) sessione.createQuery(query)
                        .setLong("id", this.id)
                        .uniqueResult();
                if (bean != null) {
                    this.tariffaAR = bean.getBigliettoAR();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tariffaAR;
    }

    /**
     * @param tariffaAR the tariffaAR to set
     */
    public void setTariffaAR(Double tariffaAR) {
        this.tariffaAR = tariffaAR;
    }

    /**
     * @return the dataApp
     */
    public String getDataApp() {
        return dataApp;
    }

    /**
     * @param dataApp the dataApp to set
     */
    public void setDataApp(String dataApp) {
        this.dataApp = dataApp;
    }

    /**
     * @return the tariffe
     */
    public String getTariffe() {
        try {
            if (this.id != null) {
                String query = "select bean from BeanBigliettoTratta bean"
                        + " where bean.beanTratta.id = :id"
                        + " order by bean.beanFasciaEta.standard";
                Session sessione = DAOConnectionSingleton.newSession();
                ArrayList listB = (ArrayList) sessione.createQuery(query)
                        .setLong("id", this.id)
                        .list();
                this.tariffe ="";
                for(int i=0; i<listB.size(); i++){
                    BeanBigliettoTratta beanB = (BeanBigliettoTratta)listB.get(i);
                    this.tariffe += beanB.getBeanFasciaEta().getDescrizione()+": Corsa Semplice "+beanB.getBigliettoS()+", Corsa A/R "+beanB.getBigliettoAR()+"\r\n";
                }
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tariffe;
    }

    /**
     * @param tariffe the tariffe to set
     */
    public void setTariffe(String tariffe) {
        this.tariffe = tariffe;
    }

    /**
     * @return the data
     */
    public java.util.Date getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(java.util.Date data) {
        this.data = data;
    }

}
